package ctl

import (
	"dynamic-private/internal/service"
	"dynamic-private/pkg/dto"
	"github.com/gin-gonic/gin"
	"github.com/tristin2024/logs"
	"github.com/tristin2024/render"
	"github.com/tristin2024/validate"
)

// QueryDynamicAdminList 查询动态后台管理
func QueryDynamicAdminList(c *gin.Context) {
	var req dto.QueryDynamicAdminList
	if err := c.ShouldBindJSON(&req); err != nil {
		render.ErrBadRequest(c, "参数类型错误")
		return
	}
	if err := validate.Struct(&req); err != nil {
		logs.Std.Warn(err)
		render.ErrBadRequest(c, "参数校验失败")
		return
	}
	data, err := service.DynamicAdminService.QueryDynamicAdminList(&req)
	if err != nil {
		render.Err(c, err)
		return
	}
	render.Data(c, data, "获取成功")

}

// AuditDynamicAdmin 审核动态
func AuditDynamicAdmin(c *gin.Context) {
	var req dto.AuditDynamicAdmin
	if err := c.ShouldBindJSON(&req); err != nil {
		render.ErrBadRequest(c, "参数类型错误")
		return
	}
	if err := validate.Struct(&req); err != nil {
		logs.Std.Warn(err)
		render.ErrBadRequest(c, "参数校验失败")
		return
	}
	err := service.DynamicAdminService.AuditDynamicAdmin(&req)
	if err != nil {
		render.Err(c, err)
		return
	}
	render.Success(c, "审核成功")
}

// HideDynamicAdmin 隐藏或显示动态
func HideDynamicAdmin(c *gin.Context) {
	var req dto.HideDynamicAdmin
	if err := c.ShouldBindJSON(&req); err != nil {
		render.ErrBadRequest(c, "参数类型错误")
		return
	}
	if err := validate.Struct(&req); err != nil {
		logs.Std.Warn(err)
		render.ErrBadRequest(c, "参数校验失败")
		return
	}
	err := service.DynamicAdminService.HideDynamicAdmin(&req)
	if err != nil {
		render.Err(c, err)
		return

	}
	render.Success(c, "操作成功")
}

// QueryDynamicCommentAdminList 查询动态评论后台管理
func QueryDynamicCommentAdminList(c *gin.Context) {
	var req dto.QueryDynamicCommentAdminList
	if err := c.ShouldBindJSON(&req); err != nil {
		render.ErrBadRequest(c, "参数类型错误")
		return
	}
	if err := validate.Struct(&req); err != nil {
		logs.Std.Warn(err)
		render.ErrBadRequest(c, "参数校验失败")
		return
	}
	data, err := service.DynamicAdminService.QueryDynamicCommentAdminList(&req)
	if err != nil {
		render.Err(c, err)
		return
	}
	render.Data(c, data, "获取成功")
}

// AuditDynamicComment 审核评论
func AuditDynamicComment(c *gin.Context) {
	var req dto.AuditDynamicComment
	if err := c.ShouldBindJSON(&req); err != nil {
		render.ErrBadRequest(c, "参数类型错误")
		return
	}
	if err := validate.Struct(&req); err != nil {
		logs.Std.Warn(err)
		render.ErrBadRequest(c, "参数校验失败")
		return
	}
	err := service.DynamicAdminService.AuditDynamicComment(&req)
	if err != nil {
		render.Err(c, err)
		return
	}
	render.Success(c, "审核成功")
}

// HideDynamicComment 隐藏或显示评论
func HideDynamicComment(c *gin.Context) {
	var req dto.HideDynamicComment
	if err := c.ShouldBindJSON(&req); err != nil {
		render.ErrBadRequest(c, "参数类型错误")
		return
	}
	if err := validate.Struct(&req); err != nil {
		logs.Std.Warn(err)
		render.ErrBadRequest(c, "参数校验失败")
		return
	}
	err := service.DynamicAdminService.HideDynamicComment(&req)
	if err != nil {
		render.Err(c, err)
		return
	}
	render.Success(c, "操作成功")
}
